/**
 * 
 */
package vwg.na.vwm.rh.motorsdk.modelo.procesos;

import java.io.Serializable;
import java.util.Calendar;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import javax.persistence.Transient;
import javax.persistence.UniqueConstraint;
import javax.persistence.Version;

import org.hibernate.annotations.Generated;
import org.hibernate.annotations.GenerationTime;

import vwg.na.vwm.rh.motorsdk.modelo.procesos.entidadesgrales.PadDefinicionBudget;
import vwg.na.vwm.rh.motorsdk.modelo.procesos.entidadesgrales.PadEstadoPlaneacionPersonal;

/**
 * @author Joel Ochoa [joel.ochoa@vw.com.mx]
 *
 */
@Entity
@Table(name = "pad_pp_planeacionPersonal", uniqueConstraints={@UniqueConstraint(columnNames =
{"folio","personaAplica"})})
public class PadPlaneacionPersonalProceso implements IEntidadGenerica, Serializable {
	
	/**
	 * 
	 */
	private static final long serialVersionUID = 2157744990684952332L;
	
	private Long folio;
	private Long registroId;
	private String titulo;
	private Integer personaCreador;
	private Calendar fechaCreacion;
	private String tipoMovimiento;
	private Integer personaAplica;
	private String comentario;
	private String estado;
	private Calendar fechaAplica;
	private Integer actividadActual;
	private Calendar fechaActividadActual;
	private Integer actividadInicial;
	
	private PadDefinicionBudget padDefinicionBudget;
	private PadEstadoPlaneacionPersonal estadoPlaneacionPersonal;

	
	/* (non-Javadoc)
	 * @see vwg.na.vwm.rh.motorsdk.modelo.procesos.IEntidadGenerica#getFolio()
	 */
	@Override
	@Id
	public Long getFolio() {
		return folio;
	}
	/* (non-Javadoc)
	 * @see vwg.na.vwm.rh.motorsdk.modelo.procesos.IEntidadGenerica#setFolio(java.lang.Long)
	 */
	@Override
	public void setFolio(Long folio) {
		this.folio = folio;

	}
	
	/* (non-Javadoc)
	 * @see vwg.na.vwm.rh.motorsdk.modelo.procesos.IEntidadGenerica#getRegistroId()
	 */
	@Override
	@Column
	public Long getRegistroId() {
		return registroId;
	}
	/* (non-Javadoc)
	 * @see vwg.na.vwm.rh.motorsdk.modelo.procesos.IEntidadGenerica#setRegistroId(java.lang.Long)
	 */
	@Override
	public void setRegistroId(Long registroId) {
		this.registroId = registroId;
	}

	/* (non-Javadoc)
	 * @see vwg.na.vwm.rh.motorsdk.modelo.procesos.IEntidadGenerica#getTitulo()
	 */
	@Override
	@Column
	public String getTitulo() {
		return titulo;
	}
	/* (non-Javadoc)
	 * @see vwg.na.vwm.rh.motorsdk.modelo.procesos.IEntidadGenerica#setTitulo(java.lang.String)
	 */
	@Override
	public void setTitulo(String titulo) {
		this.titulo = titulo;
	}

	/* (non-Javadoc)
	 * @see vwg.na.vwm.rh.motorsdk.modelo.procesos.IEntidadGenerica#getPersonaCreador()
	 */
	@Override
	@Column
	public Integer getPersonaCreador() {
		return personaCreador;
	}
	/* (non-Javadoc)
	 * @see vwg.na.vwm.rh.motorsdk.modelo.procesos.IEntidadGenerica#setPersonaCreador(java.lang.Integer)
	 */
	@Override
	public void setPersonaCreador(Integer personaCreador) {
		this.personaCreador = personaCreador;
	}

	/* (non-Javadoc)
	 * @see vwg.na.vwm.rh.motorsdk.modelo.procesos.IEntidadGenerica#getFechaCreacion()
	 */
	@Override
	@Version
	@Temporal(TemporalType.TIMESTAMP)
	@Column
	public Calendar getFechaCreacion() {
		return fechaCreacion;
	}
	/* (non-Javadoc)
	 * @see vwg.na.vwm.rh.motorsdk.modelo.procesos.IEntidadGenerica#setFechaCreacion(java.util.Calendar)
	 */
	@Override
	public void setFechaCreacion(Calendar fechaCreacion) {
		this.fechaCreacion = fechaCreacion;

	}
	
	/* (non-Javadoc)
	 * @see vwg.na.vwm.rh.motorsdk.modelo.procesos.IEntidadGenerica#getTipoMovimiento()
	 */
	@Override
	@Column
	public String getTipoMovimiento() {
		return tipoMovimiento;
	}
	/* (non-Javadoc)
	 * @see vwg.na.vwm.rh.motorsdk.modelo.procesos.IEntidadGenerica#setTipoMovimiento(java.lang.String)
	 */
	@Override
	public void setTipoMovimiento(String tipoMovimiento) {
		this.tipoMovimiento = tipoMovimiento;

	}

	/* (non-Javadoc)
	 * @see vwg.na.vwm.rh.motorsdk.modelo.procesos.IEntidadGenerica#getPersonaAplica()
	 */
	@Override
	@Column
	public Integer getPersonaAplica() {
		return personaAplica;
	}
	/* (non-Javadoc)
	 * @see vwg.na.vwm.rh.motorsdk.modelo.procesos.IEntidadGenerica#setPersonaAplica(java.lang.Integer)
	 */
	@Override
	public void setPersonaAplica(Integer personaAplica) {
		this.personaAplica = personaAplica;
	}

	/* (non-Javadoc)
	 * @see vwg.na.vwm.rh.motorsdk.modelo.procesos.IEntidadGenerica#getEstado()
	 */
	@Override
	@Column
	public String getEstado() {
		return estado;
	}
	/* (non-Javadoc)
	 * @see vwg.na.vwm.rh.motorsdk.modelo.procesos.IEntidadGenerica#setEstado(java.lang.String)
	 */
	@Override
	public void setEstado(String estado) {
		this.estado = estado;
	}

	/* (non-Javadoc)
	 * @see vwg.na.vwm.rh.motorsdk.modelo.procesos.IEntidadGenerica#getActividadActual()
	 */
	@Override
	@Column
	public Integer getActividadActual() {
		return actividadActual;
	}
	/* (non-Javadoc)
	 * @see vwg.na.vwm.rh.motorsdk.modelo.procesos.IEntidadGenerica#setActividadActual(java.lang.Integer)
	 */
	@Override
	public void setActividadActual(Integer actividadActual) {
		this.actividadActual = actividadActual;

	}

	/* (non-Javadoc)
	 * @see vwg.na.vwm.rh.motorsdk.modelo.procesos.IEntidadGenerica#getFechaActividadActual()
	 */
	@Override
	@Generated(GenerationTime.ALWAYS)
	@Temporal(TemporalType.TIMESTAMP)
	@Column
	public Calendar getFechaActividadActual() {
		return fechaActividadActual;
	}
	/* (non-Javadoc)
	 * @see vwg.na.vwm.rh.motorsdk.modelo.procesos.IEntidadGenerica#setFechaActividadActual(java.util.Calendar)
	 */
	@Override
	public void setFechaActividadActual(Calendar fechaActividadActual) {
		this.fechaActividadActual = fechaActividadActual;

	}
	
	@Override
	@Column
	public Integer getActividadInicial() {
		return this.actividadInicial;
	}
	@Override
	public void setActividadInicial(Integer actividadInicial) {
		this.actividadInicial = actividadInicial;
	}
	
	/**
	 * @return the fechaAplica
	 */
	@Column
	@Temporal(TemporalType.TIMESTAMP)
	public Calendar getFechaAplica() {
		return fechaAplica;
	}
	/**
	 * @param fechaAplica the fechaAplica to set
	 */
	public void setFechaAplica(Calendar fechaAplica) {
		this.fechaAplica = fechaAplica;
	}
	
	/**
	 * @return the definicionBudget
	 */
	@ManyToOne(fetch=FetchType.LAZY)
	@JoinColumn(name = "definicionBudget")
	public PadDefinicionBudget getPadDefinicionBudget() {
		return padDefinicionBudget;
	}
	/**
	 * @param definicionBudget the definicionBudget to set
	 */
	public void setPadDefinicionBudget(PadDefinicionBudget padDefinicionBudget) {
		this.padDefinicionBudget = padDefinicionBudget;
	}
	
	/**
	 * @return the estadoPlaneacionPersonal
	 */
	@ManyToOne(fetch=FetchType.LAZY)
	@JoinColumn(name="estadoPlaneacionPersonal")
	public PadEstadoPlaneacionPersonal getEstadoPlaneacionPersonal() {
		return estadoPlaneacionPersonal;
	}
	/**
	 * @param estadoPlaneacionPersonal the estadoPlaneacionPersonal to set
	 */
	public void setEstadoPlaneacionPersonal(PadEstadoPlaneacionPersonal estadoPlaneacionPersonal) {
		this.estadoPlaneacionPersonal = estadoPlaneacionPersonal;
	}
	
	/* (non-Javadoc)
	 * @see vwg.na.vwm.rh.motorsdk.modelo.procesos.IEntidadGenerica#getComentario()
	 */
	@Override
	@Transient
	public String getComentario() {
		return comentario;
	}
	/* (non-Javadoc)
	 * @see vwg.na.vwm.rh.motorsdk.modelo.procesos.IEntidadGenerica#setComentario(java.lang.String)
	 */
	@Override
	public void setComentario(String comentario) {
		this.comentario = comentario;
	}
	
}
